范围函数和操作符

最近更新时间: 2024-10-17 17:10:00

范围操作符

范围类型可用的操作符:

操作符 描述
= 等于
<> 不等于
< 小于
> 大于
<= 小于等于
>= 大于等于
@> 包含范围/元素
<@ 范围/元素被包含
&& 重叠
<< 严格左部
>> 严格右部
&< 不超过右部
&> 不超过左部
-|- 相邻
+
*
-

示例:

postgres=# SELECT int4range(1,5) = '[1,4]'::int4range;
?column? 
----------
t
(1 row)

postgres=# SELECT numrange(1.1,2.2) <> numrange(1.1,2.3);
?column? 
----------
t
(1 row)

postgres=# SELECT int4range(2,4) @> int4range(2,3);
?column? 
----------
t
(1 row) 
postgres=# SELECT numrange(5,15) + numrange(10,20);
?column? 
----------
[5,20)
(1 row)
postgres=# SELECT int8range(5,15) * int8range(10,20);
?column? 
----------
[10,15)
(1 row)

范围函数

函数 返回类型 描述
lower(anyrange) 范围的元素类型 范围的下界
upper(anyrange) 范围的元素类型 范围的上界
isempty(anyrange) bool 范围是否为空
lower_inc(anyrange) bool 下界是否包含在内
upper_inc(anyrange) bool 上界是否包含在内
lower_inf(anyrange) bool 下界是否无限
upper_inf(anyrange) bool 上界是否无限
range_merge(anyrange, anyrange) anyrange 最小范围其中包含两个给定范围

示例:

postgres=# SELECT lower(numrange(1.1,2.2));
lower 
-------
 1.1
(1 row) 
postgres=# SELECT upper(numrange(1.1,2.2));
upper 
-------
 2.2
(1 row) 
postgres=# SELECT isempty(numrange(1.1,2.2));
isempty 
---------
f
(1 row)
postgres=# SELECT lower_inc(numrange(1.1,2.2));
lower_inc 
-----------
t
(1 row) 
postgres=# SELECT lower_inf('(,)'::daterange);
lower_inf 
-----------
t
(1 row)
postgres=# SELECT range_merge('[1,2)'::int4range, '[3,4)'::int4range);
range_merge 
-------------
[1,4)
(1 row)